//package com.quanshi.accountmanager.utils;
//
//import com.aliyun.oss.ClientException;
//import com.aliyun.oss.OSS;
//import com.aliyun.oss.OSSClientBuilder;
//import com.aliyun.oss.OSSException;
//import com.aliyun.oss.model.*;
//import com.quanshi.accountmanager.constants.FeedConstants;
//import com.quanshi.common.core.redis.RedisCache;
//import lombok.Data;
//import lombok.extern.log4j.Log4j2;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.stereotype.Component;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.File;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.nio.file.Files;
//import java.util.ArrayList;
//import java.util.LinkedList;
//import java.util.List;
//import java.util.Objects;
//
///**
// * @author zhangShanLai
// * @description: 阿里云OSS上传，下载，删除文件工具类
// * @datetime: 2023-02-28 16:22
// */
//@Log4j2
//@Component
//@Configuration
//@ConfigurationProperties(prefix = "aliyun.oss")
//public class AliyunOSSUtil {
//
//    // OSS对外服务的访问域名
//    private String endpoint;
//    // accessKey账号
//    private String accessKeyId;
//    // accessKey密码
//    private String accessKeySecret;
//    // 桶名字
//    private String bucketName;
//
//    /**
//     * 上传文件并返回上传后的URL地址
//     *
//     * @param file            完整文件
//     * @param objectName      文件名
//     */
//    public String uploadALiYun(InputStream file, String objectName) throws Exception {
//        //外面获取文件输入流，最后方便关闭
//        try {
//            // 创建OSSClient实例。
//            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//            // 创建上传文件的元信息，可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。
//            ObjectMetadata objectMetadata = new ObjectMetadata();
//            // 文件上传
//            ossClient.putObject(bucketName, objectName, file, objectMetadata);
//            //关闭OSSClient。
//            ossClient.shutdown();
//            //返回url地址
//        } catch (OSSException oe) {
//            log.info("捕获一个OSSException，这意味着您的请求已发送到OSS, "
//                    + "但由于某种原因被拒绝了，并出现了错误响应.");
//            log.info("错误消息:" + oe.getErrorMessage());
//            log.info("错误码:" + oe.getErrorCode());
//            log.info("请求ID:" + oe.getRequestId());
//            log.info("主机ID:" + oe.getHostId());
//        } catch (ClientException ce) {
//            log.info("捕获了一个ClientException，这意味着客户端遇到了 "
//                    + "一个试图与OSS通信时出现严重的内部问题, "
//                    + "比如不能访问网络.");
//            log.info("错误消息:" + ce.getMessage());
//        }  finally {
//            file.close();
//        }
//        return objectName;
//    }
//
//    /**
//     * 文件删除
//     *
//     * @param objectName      文件名
//     */
//    public Boolean aLiYunRemove(String objectName){
//        boolean alg = true;
//        //外面获取文件输入流，最后方便关闭
//        try {
//            // 创建OSSClient实例。
//            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//            // 删除文件或目录。如果要删除目录，目录必须为空。
//            ossClient.deleteObject(bucketName,objectName);
//            log.info("{}文件删除成功", objectName);
//        } catch (OSSException oe) {
//            log.info("捕获到OSSException，这意味着您的请求已发送到OSS。但由于某种原因被拒绝并出现错误响应。");
//            log.info("错误消息:" + oe.getErrorMessage());
//            log.info("错误码:" + oe.getErrorCode());
//            log.info("请求ID:" + oe.getRequestId());
//            log.info("主机ID:" + oe.getHostId());
//            alg = false;
//        } catch (ClientException ce) {
//            log.info("捕获了一个ClientException，这意味着客户端遇到了 "
//                    + "一个试图与OSS通信时出现严重的内部问题, "
//                    + "比如不能访问网络.");
//            log.info("错误消息:" + ce.getMessage());
//            alg = false;
//        }
//        return alg;
//    }
//}
